package Controller;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

import Dao.EstadoDao;
import Dao.EstadoDaoImp;
import Dao.PessoaDao;
import Dao.PessoaDaoImp;
import Model.EstadoModel;
import Model.PessoaModel;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Date;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 *
 * @author Jonathan
 */
public class Cliente extends HttpServlet {

    /** 
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    private String erro = "";
    PessoaModel pessoa = new PessoaModel();
    PessoaModel pessoa1 = new PessoaModel();
    PessoaDao daoPes = new PessoaDaoImp();
    EstadoDao daoEst = new EstadoDaoImp();
    
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {     
            String acao = request.getParameter("acao");
            HttpSession sessao = request.getSession();

            if ("novo".equals(acao)) {
                String teste = request.getParameter("idForn");
                if (!"0".equals(teste)) {
                    acao = "altera";
                }
                Save(request, response, acao);
            } else if ("editar".equals(acao)) {
                String id = request.getParameter("id");
                pessoa1 = daoPes.getPessoa(Integer.parseInt(id));
                request.setAttribute("PessoaModel", pessoa1);
            } else if ("excluir".equals(acao)) {
                String id = request.getParameter("id");
                pessoa1 = daoPes.getPessoa(Integer.parseInt(id));
                daoPes.remove(pessoa1);
            }
            //Busca os cliente do banco
            List<PessoaModel> ListaPessoa = new ArrayList<PessoaModel>();
            ListaPessoa = daoPes.getTodos(2);
            sessao.setAttribute("ListaPessoas", ListaPessoa);
            //Busca os estados do banco
            List<EstadoModel> ListaEstado = new ArrayList<EstadoModel>();
            ListaEstado = daoEst.getTodos(1);
            sessao.setAttribute("ListaEstados", ListaEstado);
            //
            RequestDispatcher dispatcher = request.getRequestDispatcher("Cliente.jsp");
            dispatcher.forward(request, response);
            
        } catch (Exception ex) {
            ex.getMessage();
            RequestDispatcher dispatcher = request.getRequestDispatcher("Cliente.jsp");
            dispatcher.forward(request, response);
        } finally {
            out.close();
        }
    }

    private void Save(HttpServletRequest request, HttpServletResponse response, String acao) throws Exception {
        String nome = request.getParameter("campoNome");
        String cpf = request.getParameter("campoCpf");
        String dataNascimento = request.getParameter("campoNascimento");
        String telefoneRes = request.getParameter("campoTelefoneRes");
        String telefoneCel = request.getParameter("campoTelefoneCel");
        String telefoneRec = request.getParameter("campoTelefoneRec");
        String cep = request.getParameter("campoCep");
        String endereco = request.getParameter("campoEndereco");
        String numero = request.getParameter("campoNumero");
        String complemento = request.getParameter("campoComplemento");
        String bairro = request.getParameter("campoBairro");
        
        String uf = request.getParameter("insC");
        String cidade = request.getParameter("txtCidade");
        
        String foto = request.getParameter("Upload");
        String eMail = request.getParameter("campoEmail");
        String observacao = request.getParameter("campoObs");
        String status = "1"; //request.getParameter("status");

        /* Validacao dos campos obrigatorios
         */
        if ("".equals(nome)) {
            erro = erro + "Nome não foi preenchido <br />";
        }
        if ("".equals(cpf)) {
            erro = erro + "Cpf não foi preenchido <br />";
        }
        if ("".equals(dataNascimento)) {
            erro = erro + "Data de Nascimento não foi preenchido <br />";
        }
        if ("".equals(cep)) {
            erro = erro + "Cep não foi preenchido <br />";
        }
        if ("".equals(endereco)) {
            erro = erro + "Endereco não foi preenchido <br />";
        }
        if ("".equals(numero)) {
            erro = erro + "Numero não foi preenchido <br />";
        }
        if ("".equals(bairro)) {
            erro = erro + "Bairro não foi preenchido <br />";
        }
        if ("".equals(cidade)) {
            erro = erro + "Cidade não foi preenchido <br />";
        }
        if ("".equals(uf)) {
            erro = erro + "Estado não foi preenchido <br />";
        }
        if ("".equals(status)) {
            erro = erro + "É obrigatório informar um status <br />";
        }
        if (!"".equals(erro)) {
            throw new Exception("Dados invalidos");
        }
        /* Instanciando objeto
         */
        pessoa.setNomepessoa(nome);
        pessoa.setCpf(cpf);
        pessoa.setDatanascimento(Date.valueOf(dataNascimento));
        pessoa.setTelefoneres(telefoneRes);
        pessoa.setTelefonecel(telefoneCel);
        pessoa.setTelefonerec(telefoneRec);
        pessoa.setCep(cep);
        pessoa.setEndereco(endereco);
        pessoa.setNumero(Integer.parseInt(numero));
        pessoa.setComplemento(complemento);
        pessoa.setBairro(bairro);
        pessoa.setUf(uf);
        pessoa.setCidade(cidade);
        pessoa.setFoto(foto);
        pessoa.setEmail(eMail);
        pessoa.setObservacao(observacao);
        pessoa.setIdstatus(Integer.parseInt(status));
        
        /* Insercao dos dados
         */
        if ("novo".equals(acao)) {
            daoPes.save(pessoa);
            // MensagemSucesso(null, nomeFornecedor);
            //RequestDispatcher rd = getServletContext().getRequestDispatcher("/Fornecedor.jsp");
            //rd.include(request, response);

        } else if ("altera".equals(acao)) {
            daoPes.update(pessoa);
        } else {
            throw new Exception("Procedimento invalido");
        }
    }
    
    
    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /** 
     * Handles the HTTP <code>GET</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /** 
     * Handles the HTTP <code>POST</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /** 
     * Returns a short description of the servlet.
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>
}
